diff --git a/system/helpers/number_helper.php b/system/helpers/number_helper.php
index f158b1c..23ba3a1 100644
--- a/system/helpers/number_helper.php
+++ b/system/helpers/number_helper.php
@@ -1,68 +1,72 @@
-<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
-/**
- * CodeIgniter
- *
- * An open source application development framework for PHP 4.3.2 or newer
- *
- * @package		CodeIgniter
- * @author		ExpressionEngine Dev Team
- * @copyright	Copyright (c) 2006, EllisLab, Inc.
- * @license		http://codeigniter.com/user_guide/license.html
- * @link		http://codeigniter.com
- * @since		Version 1.0
- * @filesource
- */
-
-// ------------------------------------------------------------------------
-
-/**
- * CodeIgniter Number Helpers
- *
- * @package		CodeIgniter
- * @subpackage	Helpers
- * @category	Helpers
- * @author		ExpressionEngine Dev Team
- * @link		http://codeigniter.com/user_guide/helpers/number_helper.html
- */
-
-// ------------------------------------------------------------------------
-
-/**
- * Formats a numbers as bytes, based on size, and adds the appropriate suffix
- *
- * @access	public
- * @param	mixed	// will be cast as int
- * @return	string
- */
-if ( ! function_exists('byte_format'))
-{
-	function byte_format($num)
-	{
-		$num = (int) $num;
-		
-		if ($num >= 1000000000) 
-		{
-			$num = round($num/107374182)/10;
-			$unit  = 'GB';
-		}
-		elseif ($num >= 1000000) 
-		{
-			$num = round($num/104857)/10;
-			$unit  = 'MB';
-		}
-		elseif ($num >= 1000) 
-		{
-			$num = round($num/102)/10;
-			$unit  = 'KB';
-		}
-		else
-		{
-			$unit = 'Bytes';
-		}
-
-		return number_format($num, 1).' '.$unit;
-	}	
-}
-
-/* End of file number_helper.php */
+<?php  if (!defined('BASEPATH')) exit('No direct script access allowed');
+/**
+ * CodeIgniter
+ *
+ * An open source application development framework for PHP 4.3.2 or newer
+ *
+ * @package		CodeIgniter
+ * @author		ExpressionEngine Dev Team
+ * @copyright	Copyright (c) 2006, EllisLab, Inc.
+ * @license		http://codeigniter.com/user_guide/license.html
+ * @link		http://codeigniter.com
+ * @since		Version 1.0
+ * @filesource
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * CodeIgniter Number Helpers
+ *
+ * @package		CodeIgniter
+ * @subpackage	Helpers
+ * @category	Helpers
+ * @author		ExpressionEngine Dev Team
+ * @link		http://codeigniter.com/user_guide/helpers/number_helper.html
+ */
+
+// ------------------------------------------------------------------------
+
+/**
+ * Formats a numbers as bytes, based on size, and adds the appropriate suffix
+ *
+ * @access	public
+ * @param	mixed	// will be cast as int
+ * @return	string
+ */
+if ( ! function_exists('byte_format'))
+{
+	function byte_format($num)
+	{
+
+		if ($num >= 1000000000000) 
+		{
+			$num = round($num/1099511627776)/10;
+			$unit  = 'TB';
+		}
+		elseif ($num >= 1000000000) 
+		{
+			$num = round($num/107374182)/10;
+			$unit  = 'GB';
+		}
+		elseif ($num >= 1000000) 
+		{
+			$num = round($num/104857)/10;
+			$unit  = 'MB';
+		}
+		elseif ($num >= 1000) 
+		{
+			$num = round($num/102)/10;
+			$unit  = 'KB';
+		}
+		else
+		{
+			$unit = 'Bytes';
+		}
+
+		return number_format($num, 1).' '.$unit;
+	}	
+}
+
+/* End of file number_helper.php */
 /* Location: ./system/helpers/number_helper.php */
\ No newline at end of file
